const jwt = require('jsonwebtoken')

module.exports = () => {
    return (req, res, next) => {
        const token = String(req.headers.authorization || " ").split(' ').pop()
        if (!token) {
            res.status(401).send("token不能为空")
            return
        }
        try {
            const secretKey = '23123123@##@$'
            const tokenData = jwt.verify(token, secretKey)
            console.log(tokenData)
            req.user = tokenData
            // TODO:这里可以根据解析后的token数据去获取用户数据
            // const user = models.User.findOne({where: { id: tokenData.id }})
            // req.user = user
            next()
        } catch (err) {
            if (err.name == 'TokenExpiredError') { // token过期
                return res.status(401).send({
                    message: 'token过期'
                })
            } else if (err.name == 'JsonWebTokenError') { // 无效的token
                return res.status(401).send({
                    message: '无效的token'
                })
            } else {
                next(err) // 让其进入全局错误捕获中间件
            }            
        }        
    }
}